#ifndef _DRV_STRUCT_TM_H
#define _DRV_STRUCT_TM_H

#ifdef __cplusplus
extern "C" {
#endif

#if (HOST_IS_LE == 1)
struct ds_desc_tm_s
{
    /*word0*/
    uint32 u1_pkt_sop           : 1;
    uint32 u1_pkt_eop           : 1;
    uint32 u1_pkt_pkt_error     : 1;
    uint32 u1_pkt_trunc_pkt     : 1;
    uint32 u1_pkt_trunc_en      : 1;
    uint32 atomic               : 2;
    uint32 rsv0                 : 1;
    uint32 data_struct          : 6;
    uint32 rsv1                 : 2;
    uint32 intr_mask            : 1;
    uint32 pause                : 1;
    uint32 rsv2                 : 2;
    uint32 invalid0             : 4;
    uint32 u2_info_timeout      : 1;
    uint32 desc_error           : 1;
    uint32 data_error           : 1;
    uint32 rsv3                 : 1;
    uint32 error                : 1;
    uint32 rsv4                 : 2;
    uint32 done                 : 1;

    /*word1*/
    uint32 cfg_size             : 16;
    uint32 real_size            : 16;

    /*word2*/
    uint32 rsv5                 : 4;
    uint32 mem_addr             : 28;

    /*word3*/
    uint32 chipAddr;

    /*word4*/
    uint32 timestamp_l;

    /*word5*/
    uint32 timestamp_h          : 30;
    uint32 rsv6                 : 2;

    /*word6*/
    uint32 desc_padding0;

    /*word7*/
    uint32 desc_padding1;
};

struct ms_packet_header_tm_s
{
    
    /*word9[31:0]*/
    uint32 prio                                                             : 4;
    uint32 terminate_cid_hdr                                                : 1;
    uint32 dest_map                                                         : 19;
    uint32 packet_offset                                                    : 8;

    /*word8[31:0]*/
    uint32 src_svlan_id_11_11                                               : 1;
    uint32 source_port                                                      : 16;
    uint32 logic_port_type                                                  : 1;
    uint32 header_hash                                                      : 8;
    uint32 src_stag_cos                                                     : 3;
    uint32 packet_type                                                     : 3;

    /*word7[31:0]*/
    uint32 from_lag                                                         : 1;
    uint32 next_hop_ptr                                                     : 18;
    uint32 color                                                            : 2;
    uint32 src_svlan_id_10_0                                                : 11;

    /*word6[31:0]*/
    uint32 mux_length_type                                                  : 2;
    uint32 src_vlan_ptr                                                     : 13;
    uint32 svlan_tpid_index                                                 : 2;
    uint32 from_cpu_or_oam                                                  : 1;
    uint32 outer_vlan_is_c_vlan                                             : 1;
    uint32 ingress_edit_en                                                  : 1;
    uint32 from_cpu_lm_down_disable                                         : 1;
    uint32 ds_next_hop_bypass_all                                           : 1;
    uint32 bypass_ingress_edit                                              : 1;
    uint32 from_fabric                                                      : 1;
    uint32 source_port_extender                                             : 1;
    uint32 svlan_tag_operation_valid                                        : 1;
    uint32 from_cpu_lm_up_disable                                           : 1;
    uint32 port_mac_sa_en                                                   : 1;
    uint32 next_hop_ext                                                     : 1;
    uint32 src_stag_cfi                                                     : 1;
    uint32 is_leaf                                                          : 1;
    uint32 critical_packet                                                  : 1;

    /*word5[31:0]*/
    uint32 logic_src_port_14_6                                              : 9;
    uint32 fid                                                              : 14;
    uint32 oam_use_fid                                                      : 1;
    uint32 mac_known                                                        : 1;
    uint32 stag_action                                                      : 2;
    uint32 iloop_from_cpu                                                   : 1;
    uint32 is_debugged_pkt                                                  : 1;
    uint32 mac_learning_en                                                  : 1;
    uint32 bridge_operation                                                 : 1;
    uint32 oam_tunnel_en                                                    : 1;

    /*word4[31:0]*/
    uint32 u3_data_2                                                        : 15;  /*u3_other_i2eSrcCidValid{4,6,1}
                                                                                      u3_other_from_cpu{4,7,1}
                                                                                      u3_other_destChannelIdFromCpu{4,8,6
                                                                                      u3_other_destChannelIdValidFromCpu{4,14,1}*/
    uint32 operation_type                                                   : 3;
    uint32 ttl                                                              : 8;
    uint32 logic_src_port_5_0                                               : 6;

    /*word3[31:0]*/
    uint32 timestamp_36_5_31_17                                             : 15;
    uint32 local_phy_port                                                  : 8;
    uint32 u3_data_1                                                        : 9;

    /*word2[31:0]*/
    uint32 u1_data                                                          : 8;  /*u1_oam_rxOam, u1_oam_rxOam{2,0,1}*/
    uint32 u2_data : 6;
    uint32 cloud_sec_en                                                     : 1;
    uint32 timestamp_36_5_16_0                                              : 17;

    /*word0[31:0] word1[31:0]*/
    union 
    {
        struct
        {
            uint32 rsv1                                                         : 32;

            uint32 stacking_src_port                                        : 16;
            uint32 c2c_check_disable                                        : 1;
            uint32 sgmac_strip_header                                       : 1;
            uint32 neighbor_discover_packet                                 : 1;
            uint32 rsv0                                                         : 13;
        }c2c;

        struct
        {
            uint32 rsv1                                                         : 32;

            uint32 dm_offset                                                : 8;
            uint32 rsv0                                                         : 24;

        }dmtx;

        struct
        {
            uint32 decrypt_key_index_7_2                                    : 6;
            uint32 reassemble_offset                                        : 8;
            uint32 need_capwap_reassemble                                   : 1;
            uint32 capwap_last_frag                                         : 1;
            uint32 sec_tag_offset                                           : 7;
            uint32 rsv1                                                         : 9;

            uint32 user_default_cfi                                         : 1;
            uint32 user_default_cos                                         : 3;
            uint32 user_default_vlan_id                                     : 12;
            uint32 use_default_vlan_tag                                     : 1;
            uint32 user_default_vlan_valid                                  : 1;
            uint32 service_acl_qos_en                                       : 1;
            uint32 capwap_tunnel_type                                       : 2;
            uint32 capwap_mcast                                             : 1;
            uint32 need_dot1ae_decrypt                                      : 1;
            uint32 need_capwap_decap                                        : 1;
            uint32 need_capwap_decrypt                                      : 1;
            uint32 mirrored_packet_with_sec_tag                             : 1;
            uint32 mirrored_packet_with_sci                                 : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 capwap_encaped                                           : 1;
            uint32 decrypt_key_index_1_0                                    : 2;

        }e2iloop_in;

        struct
        {
            uint32 rsv1                                                         : 32;

            uint32 user_default_cfi                                         : 1;
            uint32 user_default_cos                                         : 3;
            uint32 user_default_vlan_id                                     : 12;
            uint32 use_default_vlan_tag                                     : 1;
            uint32 user_default_vlan_valid                                  : 1;
            uint32 service_acl_qos_en                                       : 1;
            uint32 capwap_tunnel_type                                       : 2;
            uint32 capwap_mcast                                             : 1;
            uint32 need_dot1ae_decrypt                                      : 1;
            uint32 need_capwap_decap                                        : 1;
            uint32 need_capwap_decrypt                                      : 1;
            uint32 mirrored_packet_with_sec_tag                             : 1;
            uint32 mirrored_packet_with_sci                                 : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 capwap_encaped                                           : 1;
            uint32 need_dot1ae_encrypt                                      : 1;
            uint32 rsv0                                                         : 1;


        }e2iloop_out;

        struct
        {
            uint32 rx_fcb_31_24                                             : 8;
            uint32 tx_fcb_23_0                                              : 24;

            uint32 rxtx_fcl                                                 : 8;
            uint32 rx_fcb_23_0                                              : 24;

        }lmtx;

        struct
        {
            uint32 no_dot1ae_encrypt                                        : 1;
            uint32 micro_burst_valid                                        : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 ipsa_prefix_length                                       : 3;
            uint32 ipsa_mode                                                : 2;
            uint32 pt_enable                                                : 1;
            uint32 ipv4_src_embeded_mode                                    : 1;
            uint32 src_address_mode                                         : 1;
            uint32 ipsa_valid                                               : 1;
            uint32 ipsa_18_0                                                : 19;

            uint32 ipsa_39_19                                               : 21;
            uint32 l4_source_port_valid                                     : 1;
            uint32 l4_source_port_9_0                                       : 10;

        }nat;

        struct
        {
            uint32 source_port_isolateId_6_1                                : 6;
            uint32 src_ctag_offset_type                                     : 1;
            uint32 src_ctag_cfi                                             : 1;
            uint32 src_ctag_cos                                             : 3;
            uint32 ctag_action                                              : 2;
            uint32 cn_action                                                : 2;
            uint32 src_dscp_valid                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 ecmp_hash                                                : 8;
            uint32 dot1ae_encrypted                                         : 1;
            uint32 acl_ctag_cfi_valid                                       : 1;
            uint32 acl_stag_cfi_valid                                       : 1;
            uint32 acl_ctag_cos_valid                                       : 1;
            uint32 acl_stag_cos_valid                                       : 1;
            uint32 is_span_pkt                                              : 1;
            uint32 port_isolate_type_0_0                                    : 1;

            uint32 no_dot1ae_encrypt                                        : 1;
            uint32 metadata                                                 : 14;
            uint32 metadata_type                                            : 2;
            uint32 microburst_valid                                         : 1;
            uint32 cvlan_tag_operation_valid                                : 1;
            uint32 src_cvlan_id                                             : 12;
            uint32 source_port_isolateId_0_0                                : 1;

        }normal;

        struct
        {
            uint32 rx_fcb_31_24                                             : 8;
            uint32 lm_received_packet                                       : 1;
            uint32 dm_en                                                    : 1;
            uint32 is_up                                                    : 1;
            uint32 use_oam_ttl                                              : 1;
            uint32 gal_exist                                                : 1;
            uint32 iloop_to_agg_up_mep                                      : 1;
            uint32 link_oam                                                 : 1;
            uint32 oam_type                                                 : 4;
            uint32 mep_index                                                : 13;

            uint32 rxtx_fcl                                                 : 8;
            uint32 rx_fcb_23_0                                              : 24;
        }oam;

        struct
        {
            uint32 timestamp61_37_24_10                                     : 15;
            uint32 rsv1                                                         : 17;

            uint32 is_cflex_update_residence_time                           : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 ptp_offset                                               : 8;
            uint32 ptp_update_residence_time                                : 1;
            uint32 ptp_apply_egress_asymmetry_delay                         : 1;
            uint32 ptp_replace_timestamp                                    : 1;
            uint32 is_l4_ptp                                                : 1;
            uint32 is_l2_ptp                                                : 1;
            uint32 ptp_deep_parser                                          : 1;
            uint32 timestamp_4_0                                            : 5;
            uint32 timestamp61_37_9_0                                       : 10;
        }ptp;
    }u1;


};

typedef struct 
{
    uint32 packetCount_27_0:28;
    uint32 byteCount_3_0:4;
    uint32 byteCount_35_4;
}DsStats_tm_s;

struct ms_dlb_efd_mon_tm_s
{
    /*word0[31:0]*/
    uint32  efdMonPtr        : 10;
    uint32  efdMonValid      : 1;
    uint32  dlbMonPtr        : 11;
    uint32  dlbMonValid      : 1;
    uint32  rsv0             : 9;

    /*word1-5[31:0]*/
    uint32  rsv1             : 32;
    uint32  rsv2             : 32;
    uint32  rsv3             : 32;
    uint32  rsv4             : 32;
    uint32  rsv5             : 32;

    /*word6[31:0]*/
    uint32  rsv6             : 8;
    uint32  monType          : 2;
    uint32  timestamp_21_0   : 22;

    /*word7[31:0]*/
    uint32  timestamp_53_22  : 32;
};

struct ms_latency_mon_tm_s
{
    union
    {
        struct
        {
            uint32 infoType             :1;
            uint32 channelId            :7;
            uint32 localPhyPort         :8;
            uint32 region               :4;
            uint32 residenceTime_11_0   :12;

            uint32 residenceTime_43_12  :32;

            uint32 residenceTime_47_44  :4;
            uint32 sourcePort           :16;
            uint32 timestamp_11_0       :12;

            uint32 timestamp_43_12      :32;

            uint32 timestamp_63_44      :20;
            uint32 valid                :1;
            uint32 rsv0                 :11;

        }event;

        struct
        {
            uint32 infoType             :1;
            uint32 channelId            :7;
            uint32 latencyThrdCnt0_23_0 :24;

            uint32 latencyThrdCnt1_23_0 :24;
            uint32 latencyThrdCnt2_7_0  :8;

            uint32 latencyThrdCnt2_23_8 :16;
            uint32 latencyThrdCnt3_15_0 :16;

            uint32 latencyThrdCnt3_23_16:8;
            uint32 latencyThrdCnt4_23_0 :24;

            uint32 latencyThrdCnt5_23_0 :24;
            uint32 latencyThrdCnt6_7_0  :8;

            
            uint32 latencyThrdCnt6_23_8 :16;
            uint32 latencyThrdCnt7_15_0 :16;

            uint32 latencyThrdCnt7_23_16:8;
            uint32 rsv1                 :24;
        }mon; 
    }u;
};
struct temp_irm_resrc_mon_info_tm_s
{
    /*word0~3*/
    union
    {
        struct
        {
            uint32 monInfoType            : 2;
            uint32 pktBufCnt              : 15;
            uint32 channelId              : 6;
            uint32 rsv1                   : 9;

            uint32 rsv2                   : 32;
        }g1;
        struct
        {
            uint32 monInfoType            : 2;
            uint32 scCnt_0                : 15;
            uint32 scCnt_1                : 15;

            uint32 scCnt_2                : 15;
            uint32 scCnt_3                : 15;
            uint32 rsv1                   : 2;
        }g2;

        struct
        {
            uint32 monInfoType            : 2;
            uint32 totalCnt               : 15;
            uint32 criticalCnt            : 15;

            uint32 c2cCnt                 : 15;
            uint32 rsv1                   : 17;
        }g3;

        struct
        {
            uint32 monInfoType            : 2;
            uint32 portTcCnt              : 15;
            uint32 portTcCntValid         : 1;
            uint32 mappedTc               : 3;
            uint32 rsv1                   : 11;

            uint32 rsv2                   : 32;
        }g4;
    }u;
};

struct ms_irm_mon_tm_s
{
    uint32 infoType                       : 1;
    uint32 u_30_0                         : 31;

    uint32 u_62_31                        : 32;
};

struct temp_erm_resrc_mon_info_tm_s
{
    /*word0~3*/
    union
    {
        struct
        {
            uint32 monInfoType            : 2;
            uint32 pktBufCnt              : 15;
            uint32 ucastBufCnt            : 15;

            uint32 mcastBufCnt            : 15;
            uint32 channelId              : 6;
            uint32 rsv1                   : 11;
        }g1;
        struct
        {
            uint32 monInfoType            : 2;
            uint32 scCnt_0                : 15;
            uint32 scCnt_1                : 15;

            uint32 scCnt_2                : 15;
            uint32 scCnt_3                : 15;
            uint32 rsv1                   : 2;
        }g2;

        struct
        {
            uint32 monInfoType            : 2;
            uint32 totalCnt               : 15;
            uint32 spanCnt                : 15;

            uint32 criticalCnt            : 15;
            uint32 rsv1                   : 17;
        }g3;

        struct
        {
            uint32 monInfoType            : 2;
            uint32 queueCnt               : 15;
            uint32 queueCntValid          : 1;
            uint32 queueOffset            : 3;
            uint32 detailedType           : 2;
            uint32 rsv1                   : 9;

            uint32 rsv2                   : 32;
        }g4;
    }u;
};

struct temp_erm_mb_mon_info_tm_s
{
    union
    {
        struct
        {
            uint32 ucastBufCnt            : 15;
            uint32 mcastBufCnt            : 15;
            uint32 sc                     : 2;
/*
            uint32 cngLevel               : 2;
            uint32 channelId              : 6;
            uint32 microburstType         : 3;
            uint32 rsv1                   : 21;
*/
        }channel;
        struct
        {
            uint32 totalCnt               : 15;
            uint32 rsv1                   : 17;
        }total;
        struct
        {
            uint32 scCnt                  : 15;
            uint32 cngLevel               : 2;
            uint32 id                     : 2;
            uint32 rsv1                   : 13;
        }sc;
        struct
        {
            uint32 criticalCnt            : 15;
            uint32 rsv1                   : 17;
        }critical;
        struct
        {
            uint32 c2cCnt                 : 15;
            uint32 rsv1                   : 17;
        }c2c;
    }u;

    uint32 u_data                         : 8;
    uint32 microburstType                 : 3;
    uint32 rsv                            : 21;
};

struct ms_erm_mon_tm_s
{
    uint32 infoType               :1;
    uint32 u_30_0                 :31;

    uint32 u_62_31                :32;

    uint32 u_94_63                :32;
};

struct hash_data_bulk_tm_s
{
    uint32 ubulk0_g1_src_local_port     : 16;
    uint32 ubulk1_g1_src_chip_id        : 16;

    uint32 ubulk2_g1_dst_local_port     : 16;
    uint32 ubulk3_g1_dst_chip_id        : 16;

    uint32 bulk13_to4_data[5];
   
    uint32 ubulk14_g1_data0             : 16;
    uint32 ubulk15_g1_data1             : 16;
};

struct hash_data_template1_tm_s
{
    uint32 gbulk4_mac_sa_low            : 16;
    uint32 gbulk5_mac_sa_middle         : 16;

    uint32 gbulk6_mac_sa_high           : 16;
    uint32 gbulk7_mac_da_low            : 16;

    uint32 gbulk8_mac_da_middle         : 16;
    uint32 gbulk9_mac_da_high           : 16;

    uint32 gbulk10_ether_type           : 16;
    uint32 gbulk11_vid_info1            : 16;

    uint32 gbulk12_vid_info2            : 16;
    uint32 gbulk13_tbd                  : 16;
};

struct hash_data_template2_tm_s
{
    uint32 gbulk4_ip_sa_low             : 16;
    uint32 gbulk5_ip_sa_high            : 16;

    uint32 gbulk6_ip_da_low             : 16;
    uint32 gbulk7_ip_da_high            : 16;

    uint32 gbulk8_l4_protocol           : 8;
    uint32 gbulk8_tbd                   : 8;
    uint32 gbulk9_l4_info1              : 16;

    uint32 gbulk10_l4_info2             : 16;
    uint32 gbulk11_vid                  : 12;
    uint32 gbulk11_tbd                  : 4;

    uint32 gbulk12_ext_info1            : 16;
    uint32 gbulk13_ext_info2            : 16;
};

struct hash_data_template2_0_tm_s
{
    uint32 gbulk4_ip_sa_low         : 16;
    uint32 gbulk5_ip_sa_high        : 16;

    uint32 gbulk6_ip_da_low         : 16;
    uint32 gbulk7_ip_da_high        : 16;

    uint32 gbulk8_l4_protocol       : 8;
    uint32 gbulk8_tbd               : 8;
    uint32 gbulk9_l4_src_port       : 16;

    uint32 gbulk10_l4_dst_port      : 16;
    uint32 gbulk11_vid              : 12;
    uint32 gbulk11_tbd              : 4;

    uint32 gbulk12_ipv6_flow_label_low   : 16;
    uint32 gbulk13_ipv6_flow_label_high  : 4;
    uint32 gbulk13_tbd                   : 12;
};

struct hash_data_template2_1_tm_s
{
    uint32 gbulk4_ip_sa_low         : 16;
    uint32 gbulk5_ip_sa_high        : 16;

    uint32 gbulk6_ip_da_low         : 16;
    uint32 gbulk7_ip_da_high        : 16;

    uint32 gbulk8_l4_protocol       : 8;
    uint32 gbulk8_tbd               : 8;
    uint32 gbulk9_l4_src_port       : 16;

    uint32 gbulk10_l4_dst_port      : 16;
    uint32 gbulk11_vid              : 12;
    uint32 gbulk11_tbd              : 4;

    uint32 gbulk12_udf_low           : 16;
    uint32 gbulk13_udf_high          : 16;
};

struct hash_data_template2_2_tm_s
{
    uint32 gbulk4_ip_sa_low         : 16;
    uint32 gbulk5_ip_sa_high        : 16;

    uint32 gbulk6_ip_da_low         : 16;
    uint32 gbulk7_ip_da_high        : 16;

    uint32 gbulk8_gre_protocol_type : 16;
    uint32 gbulk9_gre_key_low       : 16;

    uint32 gbulk10_gre_key_high     : 16;
    uint32 gbulk11_vid              : 12;
    uint32 gbulk11_tbd              : 4;

    uint32 gbulk12_udf_low           : 16;
    uint32 gbulk13_udf_high          : 16;
};

struct hash_data_template3_tm_s
{
    uint32 gbulk4_mpls_label0_low       : 16;
    uint32 gbulk5_mpls_label1_low       : 16;

    uint32 gbulk6_mpls_label2_low       : 16;
    uint32 gbulk7_mpls_label0_high      : 4;
    uint32 gbulk7_tbd                   : 12;

    uint32 gbulk8_ip_sa_low             : 16;
    uint32 gbulk9_ip_sa_high            : 16;

    uint32 gbulk10_ip_da_low            : 16;
    uint32 gbulk11_ip_da_high           : 16;

    uint32 gbulk12_mpls_Label1_high     : 4;
    uint32 gbulk12_tbd                  : 12;
    uint32 gbulk13_mpls_label2_high     : 8;
    uint32 gbulk13_tbd                  : 8;
};

struct hash_data_template5_tm_s
{
    uint32 gbulk4_mac_sa_low            : 16;
    uint32 gbulk5_mac_sa_middle         : 16;

    uint32 gbulk6_mac_sa_high           : 16;
    uint32 gbulk7_mac_da_low            : 16;

    uint32 gbulk8_mac_da_middle         : 16;
    uint32 gbulk9_mac_da_high           : 16;

    uint32 gbulk10_ether_type           : 16;
    uint32 gbulk11_vid                  : 12;
    uint32 gbulk11_tbd                  : 4;

    uint32 gbulk12_ingress_nickname     : 16;
    uint32 gbulk13_egress_nickname      : 16;
};

struct hash_data_template6_tm_s
{
    uint32 gbulk4_fcoe_sid_low          : 16;
    uint32 gbulk5_fcoe_sid_high         : 8;
    uint32 gbulk5_tbd                   : 8;

    uint32 gbulk6_fcoe_did_low          : 16;
    uint32 gbulk7_fcoe_did_high         : 8;
    uint32 gbulk7_tbd                   : 8;

    uint32 gbulk8_udf_low               : 16;
    uint32 gbulk9_udf_high              : 16;

    uint32 gbulk10_tbd                  : 16;
    uint32 gbulk11_tbd                  : 16;


    uint32 gbulk12_tbd                  : 16;
    uint32 gbulk13_tbd                  : 16;
};

struct hash_data_template_common_tm_s
{
    uint32 bulk4                        : 16;
    uint32 bulk5                        : 16;

    uint32 bulk6                        : 16;
    uint32 bulk7                        : 16;

    uint32 bulk8                        : 16;
    uint32 bulk9                        : 16;

    uint32 bulk10                       : 16;
    uint32 bulk11                       : 16;

    uint32 bulk12                       : 16;
    uint32 bulk13                       : 16;
};

struct sys_ds_ipv4_snake_tm_s
{
    /* word0[0:31] */
    uint32 entry0_ipaddr_0_31;
    /* word1[0:31] */
    uint32 entry0_nexthop_0_17:18;
    uint32 entry0_masklen_0_5:6;


    uint32 entry1_ipaddr_0_7:8;
    /* word2[0:31] */
    uint32 entry1_ipaddr_8_28:21;
    uint32 rsv0:11;
    /* word3[0:31] */
    uint32 entry1_ipaddr_29_31:3;
    uint32 entry1_nexthop_0_17:18;
    uint32 entry1_masklen_0_5:6;


    uint32 entry2_ipaddr_0_4:5;
    /* word4[0:31] */
    uint32 entry2_ipaddr_5_31:27;
    uint32 entry2_nexthop_0_4:5;
    /* word5[0:31] */
    uint32 entry2_nexthop_5_17:13;
    uint32 entry2_masklen_0_5:6;


    uint32 entry3_ipaddr_0_1:2;
    uint32 rsv1:11;
    /* word6[0:31] */
    uint32 entry3_ipaddr_2_31:30;
    uint32 entry3_nexthop_0_1:2;
    /* word7[0:31] */
    uint32 entry3_nexthop_2_17:16;
    uint32 entry3_masklen_0_5:6;


    uint32 entry4_ipaddr_0_9:10;
    /* word8[0:31] */
    uint32 entry4_ipaddr_10_30:21;
    uint32 rsv2:11;
    /* word9[0:31] */
    uint32 entry4_ipaddr_31_31:1;
    uint32 entry4_nexthop_0_17:18;
    uint32 entry4_masklen_0_5:6;


    uint32 entry5_ipaddr_0_6:7;
    /* word10[0:31] */
    uint32 entry5_ipaddr_7_31:25;
    uint32 entry5_nexthop_0_6:7;
    /* word11[0:31] */
    uint32 entry5_nexthop_7_17:11;
    uint32 entry5_masklen_0_5:6;
    uint32 rsv3:15;
};

struct sys_ds_ipv6_64_snake_tm_s
{
    /* word0[0:31] */
    uint32 entry0_ipaddr0_0_31;
    /* word1[0:31] */
    uint32 entry0_ipaddr1_0_31;
    /* word2[0:31] */
    uint32 entry0_nexthop_0_17:18;
    uint32 entry0_masklen_0_2:3;
    uint32 rsv0:11;
    /* word3[0:31] */
    uint32 entry0_masklen_3_7:5;


    uint32 entry1_ipaddr0_0_26:27;
    /* word4[0:31] */
    uint32 entry1_ipaddr0_27_31:5;
    uint32 entry1_ipaddr1_0_26:27;
    /* word5[0:31] */
    uint32 entry1_ipaddr1_27_31:5;
    uint32 entry1_nexthop_0_15:16;
    uint32 rsv1:11;
    /* word6[0:31] */
    uint32 entry1_nexthop_16_17:2;
    uint32 entry1_masklen_0_7:8;


    uint32 entry2_ipaddr0_0_21:22;
    /* word7[0:31] */
    uint32 entry2_ipaddr0_22_31:10;
    uint32 entry2_ipaddr1_0_21:22;
    /* word8[0:31] */
    uint32 entry2_ipaddr1_22_31:10;
    uint32 entry2_nexthop_0_10:11;
    uint32 rsv2:11;
    /* word9[0:31] */
    uint32 entry2_nexthop_11_17:7;
    uint32 entry2_masklen_0_7:8;
    uint32 rsv3:17;
    /* word10[0:31] */
    uint32 rsv4;
    /* word11[0:31] */
    uint32 rsv5;
};

struct sys_ds_ipv6_128_snake_tm_s
{
    /* word0[0:31] */
    uint32 entry0_ipaddr0_0_31;
    /* word1[0:31] */
    uint32 entry0_ipaddr1_0_31;
    /* word2[0:31] */
    uint32 entry0_ipaddr2_0_20:21;
    uint32 rsv0:11;
    /* word3[0:31] */
    uint32 entry0_ipaddr2_21_31:11;
    uint32 entry0_ipaddr3_0_20:21;
    /* word4[0:31] */
    uint32 entry0_ipaddr3_21_31:11;
    uint32 entry0_nexthop_0_17:18;
    uint32 entry0_masklen_0_2:3;
    /* word5[0:31] */
    uint32 entry0_masklen_3_7:5;


    uint32 entry1_ipaddr0_0_15:16;
    uint32 rsv1:11;
    /* word6[0:31] */
    uint32 entry1_ipaddr0_16_31:16;
    uint32 entry1_ipaddr1_0_15:16;
    /* word7[0:31] */
    uint32 entry1_ipaddr1_16_31:16;
    uint32 entry1_ipaddr2_0_15:16;
    /* word8[0:31] */
    uint32 entry1_ipaddr2_16_31:16;
    uint32 entry1_ipaddr3_0_4:5;
    uint32 rsv2:11;
    /* word9[0:31] */
    uint32 entry1_ipaddr3_5_31:27;
    uint32 entry1_nexthop_0_4:5;
    /* word10[0:31] */
    uint32 entry1_nexthop_5_17:13;
    uint32 entry1_masklen_0_7:8;
    uint32 rsv3:11;
    /* word11[0:31] */
    uint32 rsv4;
};

#else
struct ds_desc_tm_s
{
    /*word0*/
    uint32 done                 : 1;
    uint32 rsv4                 : 2;
    uint32 error                : 1;
    uint32 rsv3                 : 1;
    uint32 data_error           : 1;
    uint32 desc_error           : 1;
    uint32 u2_info_timeout      : 1;
    uint32 invalid0             : 4;
    uint32 rsv2                 : 2;
    uint32 pause                : 1;
    uint32 intr_mask            : 1;
    uint32 rsv1                 : 2;
    uint32 data_struct          : 6;
    uint32 rsv0                 : 1;
    uint32 atomic               : 2;
    uint32 u1_pkt_trunc_en      : 1;
    uint32 u1_pkt_trunc_pkt     : 1;
    uint32 u1_pkt_pkt_error     : 1;
    uint32 u1_pkt_eop           : 1;
    uint32 u1_pkt_sop           : 1;

    /*word1*/
    uint32 real_size            : 16;
    uint32 cfg_size             : 16;

    /*word2*/
    uint32 mem_addr             : 28;
    uint32 rsv5                 : 4;

    /*word3*/
    uint32 chipAddr;

    /*word4*/
    uint32 timestamp_l;

    /*word5*/
    uint32 rsv6                 : 2;
    uint32 timestamp_h          : 30;

    /*word6*/
    uint32 desc_padding0;

    /*word7*/
    uint32 desc_padding1;
};

struct ms_packet_header_tm_s
{
        /*word9[31:0]*/
    uint32 packet_offset                                                    : 8;
    uint32 dest_map                                                         : 19;
    uint32 terminate_cid_hdr                                                : 1;
    uint32 prio                                                             : 4;

    /*word8[31:0]*/
    uint32 packet_type                                                     : 3;
    uint32 src_stag_cos                                                     : 3;
    uint32 header_hash                                                      : 8;
    uint32 logic_port_type                                                  : 1;
    uint32 source_port                                                      : 16;
    uint32 src_svlan_id_11_11                                               : 1;
        
        /*word7[31:0]*/
    uint32 src_svlan_id_10_0                                                : 11;
    uint32 color                                                            : 2;
    uint32 next_hop_ptr                                                     : 18;
    uint32 from_lag                                                         : 1;

    /*word6[31:0]*/
    uint32 critical_packet                                                  : 1;
    uint32 is_leaf                                                          : 1;
    uint32 src_stag_cfi                                                     : 1;
    uint32 next_hop_ext                                                     : 1;
    uint32 port_mac_sa_en                                                   : 1;
    uint32 from_cpu_lm_up_disable                                           : 1;
    uint32 svlan_tag_operation_valid                                        : 1;
    uint32 source_port_extender                                             : 1;
    uint32 from_fabric                                                      : 1;
    uint32 bypass_ingress_edit                                              : 1;
    uint32 ds_next_hop_bypass_all                                           : 1;
    uint32 from_cpu_lm_down_disable                                         : 1;
    uint32 ingress_edit_en                                                  : 1;
    uint32 outer_vlan_is_c_vlan                                             : 1;
    uint32 from_cpu_or_oam                                                  : 1;
    uint32 svlan_tpid_index                                                 : 2;
    uint32 src_vlan_ptr                                                     : 13;
    uint32 mux_length_type                                                  : 2;


    /*word5[31:0]*/
    uint32 oam_tunnel_en                                                    : 1;
    uint32 bridge_operation                                                 : 1;
    uint32 mac_learning_en                                                  : 1;
    uint32 is_debugged_pkt                                                  : 1;
    uint32 iloop_from_cpu                                                   : 1;
    uint32 stag_action                                                      : 2;
    uint32 mac_known                                                        : 1;
    uint32 oam_use_fid                                                      : 1;
    uint32 fid                                                              : 14;
    uint32 logic_src_port_14_6                                              : 9;

    /*word4[31:0]*/
    uint32 logic_src_port_5_0                                               : 6;
    uint32 ttl                                                              : 8;
    uint32 operation_type                                                   : 3;
    uint32 u3_data_2                                                        : 15;  /*u3_other_i2eSrcCidValid{4,6,1}
                                                                                      u3_other_from_cpu{4,7,1}
                                                                                      u3_other_destChannelIdFromCpu{4,8,6
                                                                                      u3_other_destChannelIdValidFromCpu{4,14,1}*/
    /*word3[31:0]*/
    uint32 u3_data_1                                                        : 9;
    uint32 local_phy_port                                                  : 8;
    uint32 timestamp_36_5_31_17                                             : 15;

    /*word2[31:0]*/
    uint32 timestamp_36_5_16_0                                              : 17;
    uint32 cloud_sec_en                                                     : 1;
    uint32 u2_data                                                          : 6;
    uint32 u1_data                                                          : 8;  /*u1_oam_rxOam, u1_oam_rxOam{2,0,1}*/


    /*word0[31:0] word1[31:0]*/
    union 
    {
        struct
        {
            uint32 rsv1                                                         : 32;

            uint32 rsv0                                                         : 13;
            uint32 neighbor_discover_packet                                 : 1;
            uint32 sgmac_strip_header                                       : 1;
            uint32 c2c_check_disable                                        : 1;
            uint32 stacking_src_port                                        : 16;
        }c2c;

        struct
        {
            uint32 rsv1                                                         : 32;

            uint32 rsv0                                                         : 24;
            uint32 dm_offset                                                : 8;
        }dmtx;

        struct
        {
            uint32 rsv1                                                         : 9;
            uint32 sec_tag_offset                                           : 7;
            uint32 capwap_last_frag                                         : 1;
            uint32 need_capwap_reassemble                                   : 1;
            uint32 reassemble_offset                                        : 8;
            uint32 decrypt_key_index_7_2                                    : 6;

            uint32 decrypt_key_index_1_0                                    : 2;
            uint32 capwap_encaped                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 mirrored_packet_with_sci                                 : 1;
            uint32 mirrored_packet_with_sec_tag                             : 1;
            uint32 need_capwap_decrypt                                      : 1;
            uint32 need_capwap_decap                                        : 1;
            uint32 need_dot1ae_decrypt                                      : 1;
            uint32 capwap_mcast                                             : 1;
            uint32 capwap_tunnel_type                                       : 2;
            uint32 service_acl_qos_en                                       : 1;
            uint32 user_default_vlan_valid                                  : 1;
            uint32 use_default_vlan_tag                                     : 1;
            uint32 user_default_vlan_id                                     : 12;
            uint32 user_default_cos                                         : 3;
            uint32 user_default_cfi                                         : 1;
        }e2iloop_in;

        struct
        {
            uint32 rsv1                                                         : 32;

            uint32 rsv0                                                         : 1;
            uint32 need_dot1ae_encrypt                                      : 1;
            uint32 capwap_encaped                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 mirrored_packet_with_sci                                 : 1;
            uint32 mirrored_packet_with_sec_tag                             : 1;
            uint32 need_capwap_decrypt                                      : 1;
            uint32 need_capwap_decap                                        : 1;
            uint32 need_dot1ae_decrypt                                      : 1;
            uint32 capwap_mcast                                             : 1;
            uint32 capwap_tunnel_type                                       : 2;
            uint32 service_acl_qos_en                                       : 1;
            uint32 user_default_vlan_valid                                  : 1;
            uint32 use_default_vlan_tag                                     : 1;
            uint32 user_default_vlan_id                                     : 12;
            uint32 user_default_cos                                         : 3;
            uint32 user_default_cfi                                         : 1;
        }e2iloop_out;

        struct
        {
            uint32 tx_fcb_23_0                                              : 24;
            uint32 rx_fcb_31_24                                             : 8;

            uint32 rx_fcb_23_0                                              : 24;
            uint32 rxtx_fcl                                                 : 8;
        }lmtx;

        struct
        {
            uint32 l4_source_port_9_0                                       : 10;
            uint32 l4_source_port_valid                                     : 1;
            uint32 ipsa_39_19                                               : 21;

            uint32 ipsa_18_0                                                : 19;
            uint32 ipsa_valid                                               : 1;
            uint32 src_address_mode                                         : 1;
            uint32 ipv4_src_embeded_mode                                    : 1;
            uint32 pt_enable                                                : 1;
            uint32 ipsa_mode                                                : 2;
            uint32 ipsa_prefix_length                                       : 3;
            uint32 src_dscp_valid                                           : 1;
            uint32 acl_dscp_valid                                           : 1;
            uint32 micro_burst_valid                                        : 1;
            uint32 no_dot1ae_encrypt                                        : 1;
        }nat;

        struct
        {
            uint32 port_isolate_type_0_0                                    : 1;
            uint32 is_span_pkt                                              : 1;
            uint32 acl_stag_cos_valid                                       : 1;
            uint32 acl_ctag_cos_valid                                       : 1;
            uint32 acl_stag_cfi_valid                                       : 1;
            uint32 acl_ctag_cfi_valid                                       : 1;
            uint32 dot1ae_encrypted                                         : 1;
            uint32 ecmp_hash                                                : 8;
            uint32 acl_dscp_valid                                           : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 cn_action                                                : 2;
            uint32 ctag_action                                              : 2;
            uint32 src_ctag_cos                                             : 3;
            uint32 src_ctag_cfi                                             : 1;
            uint32 src_ctag_offset_type                                     : 1;
            uint32 source_port_isolateId_6_1                                : 6;

            uint32 source_port_isolateId_0_0                                : 1;
            uint32 src_cvlan_id                                             : 12;
            uint32 cvlan_tag_operation_valid                                : 1;
            uint32 microburst_valid                                         : 1;
            uint32 metadata_type                                            : 2;
            uint32 metadata                                                 : 14;
            uint32 no_dot1ae_encrypt                                        : 1;

        }normal;

        struct
        {
            uint32 mep_index                                                : 13;
            uint32 oam_type                                                 : 4;
            uint32 link_oam                                                 : 1;
            uint32 iloop_to_agg_up_mep                                      : 1;
            uint32 gal_exist                                                : 1;
            uint32 use_oam_ttl                                              : 1;
            uint32 is_up                                                    : 1;
            uint32 dm_en                                                    : 1;
            uint32 lm_received_packet                                       : 1;
            uint32 rx_fcb_31_24                                             : 8;

            uint32 rx_fcb_23_0                                              : 24;
            uint32 rxtx_fcl                                                 : 8;
        }oam;

        struct
        {
            uint32 rsv1                                                         : 17;
            uint32 timestamp61_37_24_10                                     : 15;

            uint32 timestamp61_37_9_0                                       : 10;
            uint32 timestamp_4_0                                            : 5;
            uint32 ptp_deep_parser                                          : 1;
            uint32 is_l2_ptp                                                : 1;
            uint32 is_l4_ptp                                                : 1;
            uint32 ptp_replace_timestamp                                    : 1;
            uint32 ptp_apply_egress_asymmetry_delay                         : 1;
            uint32 ptp_update_residence_time                                : 1;
            uint32 ptp_offset                                               : 8;
            uint32 acl_dscp_valid                                           : 1;
            uint32 src_dscp_valid                                           : 1;
            uint32 is_cflex_update_residence_time                           : 1;
        }ptp;
    }u1;

};

typedef struct
{
    uint32 byteCount_3_0:4;
    uint32 packetCount_27_0:28;
    uint32 byteCount_35_4;
}DsStats_tm_s;

struct ms_dlb_efd_mon_tm_s
{
    /*word0[31:0]*/
    uint32  efdMonPtr        : 10;
    uint32  efdMonValid      : 1;
    uint32  dlbMonPtr        : 11;
    uint32  dlbMonValid      : 1;
    uint32  rsv0             : 9;

    /*word1-5[31:0]*/
    uint32  rsv1             : 32;
    uint32  rsv2             : 32;
    uint32  rsv3             : 32;
    uint32  rsv4             : 32;
    uint32  rsv5             : 32;

    /*word6[31:0]*/
    uint32  rsv6             : 8;
    uint32  monType          : 2;
    uint32  timestamp_21_0   : 22;

    /*word7[31:0]*/
    uint32  timestamp_53_22  : 32;
};

struct ms_latency_mon_tm_s
{
    union
    {
        struct
        {
            uint32 residenceTime_11_0   :12;
            uint32 region               :4;
            uint32 localPhyPort         :8;
            uint32 channelId            :7;
            uint32 infoType             :1;

            uint32 residenceTime_43_12  :32;

            uint32 timestamp_11_0       :12;
            uint32 sourcePort           :16;
            uint32 residenceTime_47_44  :4;

            uint32 timestamp_43_12      :32;

            uint32 rsv0                 :11;
            uint32 valid                :1;
            uint32 timestamp_63_44      :20;

        }event;

        struct
        {
            uint32 latencyThrdCnt0_23_0 :24;
            uint32 channelId            :7;
            uint32 infoType             :1;


            uint32 latencyThrdCnt2_7_0  :8;
            uint32 latencyThrdCnt1_23_0 :24;

            uint32 latencyThrdCnt3_15_0 :16;
            uint32 latencyThrdCnt2_23_8 :16;

            uint32 latencyThrdCnt4_23_0 :24;
            uint32 latencyThrdCnt3_23_16:8;

            uint32 latencyThrdCnt6_7_0  :8;
            uint32 latencyThrdCnt5_23_0 :24;

            uint32 latencyThrdCnt7_15_0 :16;
            uint32 latencyThrdCnt6_23_8 :16;

            uint32 rsv1                 :24;
            uint32 latencyThrdCnt7_23_16:8;
        }mon; 
    }u;
};
struct temp_irm_resrc_mon_info_tm_s
{
    /*word0~3*/
    union
    {
        struct
        {
            uint32 rsv1                   : 9;
            uint32 channelId              : 6;
            uint32 pktBufCnt              : 15;
            uint32 monInfoType            : 2;

            uint32 rsv2                   : 32;
        }g1;
        struct
        {
            uint32 scCnt_1                : 15;
            uint32 scCnt_0                : 15;
            uint32 monInfoType            : 2;

            uint32 rsv1                   : 2;
            uint32 scCnt_3                : 15;
            uint32 scCnt_2                : 15;
        }g2;

        struct
        {
            uint32 criticalCnt            : 15;
            uint32 totalCnt               : 15;
            uint32 monInfoType            : 2;

            uint32 rsv1                   : 17;
            uint32 c2cCnt                 : 15;
        }g3;

        struct
        {
            uint32 rsv1                   : 11;
            uint32 mappedTc               : 3;
            uint32 portTcCntValid         : 1;
            uint32 portTcCnt              : 15;
            uint32 monInfoType            : 2;

            uint32 rsv2                   : 32;
        }g4;
    }u;
};

struct ms_irm_mon_tm_s
{
    uint32 u_30_0                         : 31;
    uint32 infoType                       : 1;

    uint32 u_62_31                        : 32;
};

struct temp_erm_resrc_mon_info_tm_s
{
    /*word0~3*/
    union
    {
        struct
        {
            uint32 ucastBufCnt            : 15;
            uint32 pktBufCnt              : 15;
            uint32 monInfoType            : 2;

            uint32 rsv1                   : 11;
            uint32 channelId              : 6;
            uint32 mcastBufCnt            : 15;
        }g1;
        struct
        {
            uint32 scCnt_1                : 15;
            uint32 scCnt_0                : 15;
            uint32 monInfoType            : 2;

            uint32 rsv1                   : 2;
            uint32 scCnt_3                : 15;
            uint32 scCnt_2                : 15;
        }g2;

        struct
        {
            uint32 spanCnt                : 15;
            uint32 totalCnt               : 15;
            uint32 monInfoType            : 2;

            uint32 rsv1                   : 17;
            uint32 criticalCnt            : 15;
        }g3;

        struct
        {
            uint32 rsv1                   : 9;
            uint32 detailedType           : 2;
            uint32 queueOffset            : 3;
            uint32 queueCntValid          : 1;
            uint32 queueCnt               : 15;
            uint32 monInfoType            : 2;

            uint32 rsv2                   : 32;
        }g4;
    }u;
};

struct temp_erm_mb_mon_info_tm_s
{
    union
    {
        struct
        {
            uint32 sc                     : 2;
            uint32 mcastBufCnt            : 15;
            uint32 ucastBufCnt            : 15;
/*
            uint32 rsv1                   : 21;
            uint32 microburstType         : 3;
            uint32 channelId              : 6;
            uint32 cngLevel               : 2;
*/
        }channel;
        struct
        {
            uint32 rsv1                   : 17;
            uint32 totalCnt               : 15;
        }total;
        struct
        {
            uint32 rsv1                   : 13;
            uint32 id                     : 2;
            uint32 cngLevel               : 2;
            uint32 scCnt                  : 15;
        }sc;
        struct
        {
            uint32 rsv1                   : 17;
            uint32 criticalCnt            : 15;
        }critical;
        struct
        {
            uint32 rsv1                   : 17;
            uint32 c2cCnt                 : 15;
        }c2c;
    }u;

    uint32 rsv                            : 21;
    uint32 microburstType                 : 3;
    uint32 u_data                         : 8;
};

struct ms_erm_mon_tm_s
{
    uint32 u_30_0                 :31;
    uint32 infoType               :1;

    uint32 u_62_31                :32;

    uint32 u_94_63                :32;
};

struct hash_data_bulk_tm_s
{
    uint32 ubulk1_g1_src_chip_id        : 16;
    uint32 ubulk0_g1_src_local_port     : 16;

    uint32 ubulk3_g1_dst_chip_id        : 16;
    uint32 ubulk2_g1_dst_local_port     : 16;

    uint32 bulk13_to4_data[5];
   
    uint32 ubulk15_g1_data1             : 16;
    uint32 ubulk14_g1_data0             : 16;
};

struct hash_data_template1_tm_s
{
    uint32 gbulk5_mac_sa_middle         : 16;
    uint32 gbulk4_mac_sa_low            : 16;

    uint32 gbulk7_mac_da_low            : 16;
    uint32 gbulk6_mac_sa_high           : 16;

    uint32 gbulk9_mac_da_high           : 16;
    uint32 gbulk8_mac_da_middle         : 16;

    uint32 gbulk11_vid_info1            : 16;
    uint32 gbulk10_ether_type           : 16;

    uint32 gbulk13_tbd                  : 16;
    uint32 gbulk12_vid_info2            : 16;
};

struct hash_data_template2_tm_s
{
    uint32 gbulk5_ip_sa_high            : 16;
    uint32 gbulk4_ip_sa_low             : 16;

    uint32 gbulk7_ip_da_high            : 16;
    uint32 gbulk6_ip_da_low             : 16;

    uint32 gbulk9_l4_info1              : 16;
    uint32 gbulk8_tbd                   : 8;
    uint32 gbulk8_l4_protocol           : 8;

    uint32 gbulk11_tbd                  : 4;
    uint32 gbulk11_vid                  : 12;
    uint32 gbulk10_l4_info2             : 16;

    uint32 gbulk13_ext_info2            : 16;
    uint32 gbulk12_ext_info1            : 16;
};

struct hash_data_template2_0_tm_s
{
    uint32 gbulk5_ip_sa_high        : 16;
    uint32 gbulk4_ip_sa_low         : 16;

    uint32 gbulk7_ip_da_high        : 16;
    uint32 gbulk6_ip_da_low         : 16;

    uint32 gbulk9_l4_src_port       : 16;
    uint32 gbulk8_tbd               : 8;
    uint32 gbulk8_l4_protocol       : 8;

    uint32 gbulk11_tbd              : 4;
    uint32 gbulk11_vid              : 12;
    uint32 gbulk10_l4_dst_port      : 16;

    uint32 gbulk13_tbd                   : 12;
    uint32 gbulk13_ipv6_flow_label_high  : 4;
    uint32 gbulk12_ipv6_flow_label_low   : 16;
};

struct hash_data_template2_1_tm_s
{
    uint32 gbulk5_ip_sa_high        : 16;
    uint32 gbulk4_ip_sa_low         : 16;

    uint32 gbulk7_ip_da_high        : 16;
    uint32 gbulk6_ip_da_low         : 16;

    uint32 gbulk9_l4_src_port       : 16;
    uint32 gbulk8_tbd               : 8;
    uint32 gbulk8_l4_protocol       : 8;

    uint32 gbulk11_tbd              : 4;
    uint32 gbulk11_vid              : 12;
    uint32 gbulk10_l4_dst_port      : 16;

    uint32 gbulk13_udf_high          : 16;
    uint32 gbulk12_udf_low           : 16;

};

struct hash_data_template2_2_tm_s
{
    uint32 gbulk5_ip_sa_high        : 16;
    uint32 gbulk4_ip_sa_low         : 16;

    uint32 gbulk7_ip_da_high        : 16;
    uint32 gbulk6_ip_da_low         : 16;

    uint32 gbulk9_gre_key_low       : 16;
    uint32 gbulk8_gre_protocol_type : 16;

    uint32 gbulk11_tbd              : 4;
    uint32 gbulk11_vid              : 12;
    uint32 gbulk10_gre_key_high     : 16;

    uint32 gbulk13_udf_high          : 16;
    uint32 gbulk12_udf_low           : 16;
};

struct hash_data_template3_tm_s
{
    uint32 gbulk5_mpls_label1_low       : 16;
    uint32 gbulk4_mpls_label0_low       : 16;

    uint32 gbulk7_tbd                   : 12;
    uint32 gbulk7_mpls_label0_high      : 4;
    uint32 gbulk6_mpls_label2_low       : 16;

    uint32 gbulk9_ip_sa_high            : 16;
    uint32 gbulk8_ip_sa_low             : 16;

    uint32 gbulk11_ip_da_high           : 16;
    uint32 gbulk10_ip_da_low            : 16;

    uint32 gbulk13_tbd                  : 8;
    uint32 gbulk13_mpls_label2_high     : 8;
    uint32 gbulk12_tbd                  : 12;
    uint32 gbulk12_mpls_Label1_high     : 4;
};

struct hash_data_template5_tm_s
{
    uint32 gbulk5_mac_sa_middle         : 16;
    uint32 gbulk4_mac_sa_low            : 16;

    uint32 gbulk7_mac_da_low            : 16;
    uint32 gbulk6_mac_sa_high           : 16;

    uint32 gbulk9_mac_da_high           : 16;
    uint32 gbulk8_mac_da_middle         : 16;

    uint32 gbulk11_tbd                  : 4;
    uint32 gbulk11_vid                  : 12;
    uint32 gbulk10_ether_type           : 16;

    uint32 gbulk13_egress_nickname      : 16;
    uint32 gbulk12_ingress_nickname     : 16;

};

struct hash_data_template6_tm_s
{
    uint32 gbulk5_tbd                   : 8;
    uint32 gbulk5_fcoe_sid_high         : 8;
    uint32 gbulk4_fcoe_sid_low          : 16;

    uint32 gbulk7_tbd                   : 8;
    uint32 gbulk7_fcoe_did_high         : 8;
    uint32 gbulk6_fcoe_did_low          : 16;

    uint32 gbulk9_udf_high              : 16;
    uint32 gbulk8_udf_low               : 16;

    uint32 gbulk11_tbd                  : 16;
    uint32 gbulk10_tbd                  : 16;

    uint32 gbulk13_tbd                  : 16;
    uint32 gbulk12_tbd                  : 16;
};

struct hash_data_template_common_tm_s
{
    uint32 bulk5                        : 16;
    uint32 bulk4                        : 16;

    uint32 bulk7                        : 16;
    uint32 bulk6                        : 16;

    uint32 bulk9                        : 16;
    uint32 bulk8                        : 16;

    uint32 bulk11                       : 16;
    uint32 bulk10                       : 16;

    uint32 bulk13                       : 16;
    uint32 bulk12                       : 16;
};

struct sys_ds_ipv4_snake_tm_s
{
    /* word0[0:31] */
    uint32 entry0_ipaddr_0_31;
    /* word1[0:31] */
    uint32 entry1_ipaddr_0_7:8;
    uint32 entry0_masklen_0_5:6;
    uint32 entry0_nexthop_0_17:18;
    /* word2[0:31] */
    uint32 rsv0:11;
    uint32 entry1_ipaddr_8_28:21;
    /* word3[0:31] */
    uint32 entry2_ipaddr_0_4:5;
    uint32 entry1_masklen_0_5:6;
    uint32 entry1_nexthop_0_17:18;
    uint32 entry1_ipaddr_29_31:3;
    /* word4[0:31] */
    uint32 entry2_nexthop_0_4:5;
    uint32 entry2_ipaddr_5_31:27;
    /* word5[0:31] */
    uint32 rsv1:11;
    uint32 entry3_ipaddr_0_1:2;
    uint32 entry2_masklen_0_5:6;
    uint32 entry2_nexthop_5_17:13;
    /* word6[0:31] */
    uint32 entry3_nexthop_0_1:2;
    uint32 entry3_ipaddr_2_31:30;
    /* word7[0:31] */
    uint32 entry4_ipaddr_0_9:10;
    uint32 entry3_masklen_0_5:6;
    uint32 entry3_nexthop_2_17:16;
    /* word8[0:31] */
    uint32 rsv2:11;
    uint32 entry4_ipaddr_10_30:21;
    /* word9[0:31] */
    uint32 entry5_ipaddr_0_6:7;
    uint32 entry4_masklen_0_5:6;
    uint32 entry4_nexthop_0_17:18;
    uint32 entry4_ipaddr_31_31:1;
    /* word10[0:31] */
    uint32 entry5_nexthop_0_6:7;
    uint32 entry5_ipaddr_7_31:25;
    /* word11[0:31] */
    uint32 rsv3:15;
    uint32 entry5_masklen_0_5:6;
    uint32 entry5_nexthop_7_17:11;
};

struct sys_ds_ipv6_64_snake_tm_s
{
    /* word0[0:31] */
    uint32 entry0_ipaddr0_0_31;
    /* word1[0:31] */
    uint32 entry0_ipaddr1_0_31;
    /* word2[0:31] */
    uint32 rsv0:11;
    uint32 entry0_masklen_0_2:3;
    uint32 entry0_nexthop_0_17:18;
    /* word3[0:31] */
    uint32 entry1_ipaddr0_0_26:27;
    uint32 entry0_masklen_3_7:5;
    /* word4[0:31] */
    uint32 entry1_ipaddr1_0_26:27;
    uint32 entry1_ipaddr0_27_31:5;
    /* word5[0:31] */
    uint32 rsv1:11;
    uint32 entry1_nexthop_0_15:16;
    uint32 entry1_ipaddr1_27_31:5;
    /* word6[0:31] */
    uint32 entry2_ipaddr0_0_21:22;
    uint32 entry1_masklen_0_7:8;
    uint32 entry1_nexthop_16_17:2;
    /* word7[0:31] */
    uint32 entry2_ipaddr1_0_21:22;
    uint32 entry2_ipaddr0_22_31:10;
    /* word8[0:31] */
    uint32 rsv2:11;
    uint32 entry2_nexthop_0_10:11;
    uint32 entry2_ipaddr1_22_31:10;
    /* word9[0:31] */
    uint32 rsv3:17;
    uint32 entry2_masklen_0_7:8;
    uint32 entry2_nexthop_11_17:7;
    /* word10[0:31] */
    uint32 rsv4;
    /* word11[0:31] */
    uint32 rsv5;
};

struct sys_ds_ipv6_128_snake_tm_s
{
    /* word0[0:31] */
    uint32 entry0_ipaddr0_0_31;
    /* word1[0:31] */
    uint32 entry0_ipaddr1_0_31;
    /* word2[0:31] */
    uint32 rsv0:11;
    uint32 entry0_ipaddr2_0_20:21;
    /* word3[0:31] */
    uint32 entry0_ipaddr3_0_20:21;
    uint32 entry0_ipaddr2_21_31:11;
    /* word4[0:31] */
    uint32 entry0_masklen_0_2:3;
    uint32 entry0_nexthop_0_17:18;
    uint32 entry0_ipaddr3_21_31:11;
    /* word5[0:31] */
    uint32 rsv1:11;
    uint32 entry1_ipaddr0_0_15:16;
    uint32 entry0_masklen_3_7:5;
    /* word6[0:31] */
    uint32 entry1_ipaddr1_0_15:16;
    uint32 entry1_ipaddr0_16_31:16;
    /* word7[0:31] */
    uint32 entry1_ipaddr2_0_15:16;
    uint32 entry1_ipaddr1_16_31:16;
    /* word8[0:31] */
    uint32 rsv2:11;
    uint32 entry1_ipaddr3_0_4:5;
    uint32 entry1_ipaddr2_16_31:16;
    /* word9[0:31] */
    uint32 entry1_nexthop_0_4:5;
    uint32 entry1_ipaddr3_5_31:27;
    /* word10[0:31] */
    uint32 rsv3:11;
    uint32 entry1_masklen_0_7:8;
    uint32 entry1_nexthop_5_17:13;
    /* word11[0:31] */
    uint32 rsv4;
};
#endif

typedef struct ds_desc_tm_s ds_desc_tm_t;
typedef struct ms_packet_header_tm_s  ms_packet_header_tm_t;
typedef struct ms_dlb_efd_mon_tm_s  ms_dlb_efd_mon_tm_t;
typedef struct ms_latency_mon_tm_s  ms_latency_mon_tm_t;
typedef struct temp_irm_resrc_mon_info_tm_s  temp_irm_resrc_mon_info_tm_t;
typedef struct ms_irm_mon_tm_s  ms_irm_mon_tm_t;
typedef struct temp_erm_resrc_mon_info_tm_s  temp_erm_resrc_mon_info_tm_t;
typedef struct temp_erm_mb_mon_info_tm_s  temp_erm_mb_mon_info_tm_t;
typedef struct ms_erm_mon_tm_s  ms_erm_mon_tm_t;
typedef struct hash_data_bulk_tm_s hash_data_bulk_tm_t;
typedef struct hash_data_template1_tm_s hash_data_template1_tm_t;
typedef struct hash_data_template2_tm_s hash_data_template2_tm_t;
typedef struct hash_data_template2_0_tm_s hash_data_template2_0_tm_t;
typedef struct hash_data_template2_1_tm_s hash_data_template2_1_tm_t;
typedef struct hash_data_template2_2_tm_s hash_data_template2_2_tm_t;
typedef struct hash_data_template3_tm_s hash_data_template3_tm_t;
typedef struct hash_data_template5_tm_s hash_data_template5_tm_t;
typedef struct hash_data_template_common_tm_s hash_data_template_common_tm_t;
typedef struct sys_ds_ipv4_snake_tm_s sys_ds_ipv4_snake_tm_t;
typedef struct sys_ds_ipv6_64_snake_tm_s sys_ds_ipv6_64_snake_tm_t;
typedef struct sys_ds_ipv6_128_snake_tm_s sys_ds_ipv6_128_snake_tm_t;
#ifdef __cplusplus
}
#endif

#endif

